/*
 * @Author: WJC 
 * @Date: 2018-11-28 14:21:11 
 * @Last Modified by: WJC
 * @Last Modified time: 2018-12-03 14:10:59
 */

// 声明全局变量
var payInoInput; // "挂号发票号"输入框
var caseNoInput; // "病例号"输入框
var pidInput; // "身份证号"输入框
var pnameInput; // "姓名"输入框
var sexInput; // "性别"输入框
var ageInput; // "年龄"输入框
var birthdayInput; // "出生日期"
var deptSelect; // "挂号科室"下拉列表
var drnameSelect; // "看诊医生"下拉列表
var settleTypeSelect; // "结算类别"下拉列表
var mcardNoInput; // "医疗证号"输入框
var medicalTypeSelect; // "医疗类别"下拉框
var ageUnitSelect; // 年、月、日选择项
var changeAllCheckBox; // 药品信息表格的复选框
var changeAllCheckBox2; // 收费项目列表的复选框
var cTbody; // 收费项目列表
var healthDiagnosisInput; // "医保诊断"输入框
var checkArr = [false, false, false, false, false, false, false, false, false]; // 存放必须检测的表单元素结果

/**
 * 获取全局变量
 */
function getGlobalVariable() {
    payInoInput = $('input[name="pay_ino"]');
    caseNoInput = $('input[name="case_no"]');
    pidInput = $('input[name="pid"]');
    pnameInput = $('input[name="pname"]');
    sexInput = $('select[name="sex"]');
    ageInput = $('input[name="age"]');
    birthdayInput = $('input[name="birthday"]');
    deptSelect = $('select[name="department"]');
    drnameSelect = $('select[name="drname"]');
    settleTypeSelect = $('select[name="settle_type"]');
    mcardNoInput = $('input[name="mcard_no"]');
    medicalTypeSelect = $('select[name="medical_type"]');
    ageUnitSelect = $('select[name="age_unit"]');
    changeAllCheckBox = $("input[name='change_all']");
    changeAllCheckBox2 = $("input[name='change_all2']");
    cTbody = $(".charging_items");
    healthDiagnosisInput = $("input[name='health_diagnosis']");
}

/**
 * 将不足10位的数值，转换为长度为10的字符串
 * @param {number} num 
 */
function getTenStr(num) {
    // 将num转换成字符串，根据字符串长度获得正确的数值位数
    var str = num + "";
    var len = str.length;
    // 根据字符串长度进行位数补全，补全到10位，不足位添0
    if (len < 10) {
        for (var i = 0; i < 10 - len; i++) {
            str = "0" + str;
        }
    }
    return str;
}

/**
 * 输入检测样式
 */
function checkStyle(obj, flag) {
    if (flag) {
        $(obj).css("border", "1px solid rgb(169, 169, 169)");
    } else {
        $(obj).css("border", "1px solid red");
    }
}

/**
 * 表单验证工具对象
 */
var checkUtil = {
    // 未输入检测
    checkNoInput: function (obj) {
        // 直接传入表单控件时，获取控件内容
        if (typeof obj !== "string") {
            obj = obj.val();
        }

        if (obj === "" || obj === null || obj === undefined) {
            // 没有有输入内容
            //alert("未输入");
            return false;
        }
        return true;
    },

    // 输入长度检测
    checkLength: function (obj, len) {
        // 直接传入表单控件时，获取控件内容
        if (typeof obj !== "string") {
            obj = obj.val();
        }

        if (obj.length !== len) {
            // 字符串不是10位
            //alert("输入长度不是" + len + "位");
            return false;
        }
        return true;
    },

    // 数字格式检测
    checkNumber: function (obj, len) {
        // 直接传入表单控件时，获取控件内容
        if (typeof obj !== "string") {
            obj = obj.val();
        }

        // 发票号的正则表达式
        var s = "^\\d{" + len + "}$";
        var format = new RegExp(s);

        // 根据正则表达式判断输入发票号是否正确
        if (!format.test(obj)) {
            //alert("输入格式不正确");
            return false;
        }
        return true;
    },

    // 日期格式检测
    checkDateFormat: function (obj) {
        // 直接传入表单控件时，获取控件内容
        if (typeof obj !== "string") {
            obj = obj.val();
        }

        // 日期的正则表达式
        var format = /^((19|20)\d\d)-(0?[1-9]|1[012])-(0?[1-9]|[12][0-9]|3[01])$/;

        // 根据正则表达式判断输入日期格式是否正确
        if (!format.test(obj)) {
            //alert("日期格式不正确，格式“yyyy-MM-dd");
            return false;
        }
        return true;
    },

    // 身份证号格式检测
    checkIDCardFormat: function (obj) {
        // 直接传入表单控件时，获取控件内容
        if (typeof obj !== "string") {
            obj = obj.val();
        }

        // 身份证号位数检测
        var len = obj.length;
        if (len !== 15 && len !== 18) {
            //alert("身份证号位数不正确");
            return false;
        }

        // 身份证号的正则表达式
        var format15 = /^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{2}$/;
        var format18 = /^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;

        // 根据正则表达式判断输入身份证号格式是否正确
        switch (len) {
            case 15:
                // 15位身份证号检测
                if (!format15.test(obj)) {
                    //alert("身份证号格式不正确");
                    return false;
                }
                break;

            case 18:
                // 18位身份证号检测
                if (!format18.test(obj)) {
                    //alert("身份证号格式不正确");
                    return false;
                }
                break;
        }
        return true;
    },

    // 下拉列表检测
    checkSelect: function (obj) {
        // 直接传入表单控件时，获取控件内容
        if (typeof obj !== "string") {
            obj = obj.val();
        }

        if (obj === "0" || obj === "" || obj === null || obj === undefined) {
            //alert("没有选择选项");
            return false;
        }
        return true;
    }
};

/**
 * 传入name为pid的input输入值，通过该输入值获取服务器端的对应身份证信息
 * @param {string} pidValue
 */
function queryIdCardInfoByPid(pidValue) {
    // 当pid的值为空字符串时不执行函数
    if (pidValue === "") {
        return;
    }

    // 通过AJAX获得数据
    $.ajax({
        url: "getIdCardInfo.do",
        type: "post",
        async: true,
        data: {
            pid: pidValue
        },
        dataType: "text",
        error: function () {
            alert("身份证号的ajax请求失败");
        },
        success: function (data) {
            // num的值为-1时，表示数据库中该记录不存在
            var num = parseInt(data);
            if (num !== -1) {
                var json = eval("(" + data + ")"); // string->json
                pnameInput.val(json.pname); // 添加"姓名"
                sexInput.val(parseInt(json.sex)); // 添加"性别"
                birthdayInput.val(json.birthday); // 添加"出生日期"
                getAgeByBirthday(); // 取得相应年龄

            } else {
                // 消除上一次残留记录
                pnameInput.val("");
                sexInput.val(0);
                birthdayInput.val("");
                ageInput.val("");

            }
        }
    });
}

/**
 * 根据"出生日期"获得相应的"年龄"
 */
function getAgeByBirthday() {
    // 获得"出生日期"输入框的值，格式为"yyyy-MM-dd"
    var birth = birthdayInput.val();
    // 对获得的"出生日期"字符串进行拆分，得到年、月、日的字符串
    var _year = birth.substring(0, birth.indexOf("-"));
    var _month = birth.substring(birth.indexOf("-") + 1, birth.lastIndexOf("-"));
    var _date = birth.substring(birth.lastIndexOf("-") + 1, birth.length);
    // 将年、月、日的字符串转换为相应的数值
    var y = parseInt(_year);
    var m = parseInt(_month) - 1;
    var d = parseInt(_date);
    // 获得"出生日期"的时间戳
    var birthTime = new Date(y, m, d).getTime();
    // 获得当前时间的时间戳
    var nowTime = new Date().getTime();
    // 计算出相差的时间
    var c = nowTime - birthTime;

    var age = Math.floor(c / (365 * 24 * 60 * 60 * 1000));
    if (age < 1) {
        age = Math.floor(c / (30 * 24 * 60 * 60 * 1000));
        ageUnitSelect.val("2");
        if (age < 1) {
            age = Math.floor(c / (24 * 60 * 60 * 1000));
            ageUnitSelect.val("3");
        }
    }
    // 为"年龄"输入框赋值
    ageInput.val(age);

    console.log(_year + "、" + _month + "、" + _date);
}

/**
 * 获得当前可用的最新收费发票号，并为"收费发票号"输入框的value属性赋值
 */
function getPayIno() {
    // 通过AJAX获得数据
    $.ajax({
        url: "getRequiredPayIno.do",
        type: "post",
        async: true,
        error: function () {
            alert("收费发票号的ajax请求失败");
        },
        success: function (data) {
            // 1、将获得的data数据转换成数值类型num
            var num = parseInt(data);
            // 2、如果num的值为-1，表示发票号超出范围，弹出警告，并结束函数
            if (num === -1) {
                alert("收费发票号溢出，请联系技术人员");
                return;
            }
            // 3、将不足10位的数值，转换为长度为10的字符串
            var str = getTenStr(num);

            // 为"收费发票号"输入框的value属性赋值
            payInoInput.val(str);
        }
    });
}

/**
 * 通过AJAX获得来自服务器的"科室表"JSON，根据该JSON创建下拉列表项
 */
function createDeptOption() {
    // 通过AJAX获得数据
    $.ajax({
        type: "post",
        url: "getAllDepartment.do",
        async: true,
        dataType: "text",
        error: function () {
            alert("科室列表的ajax请求失败");
        },
        success: function (data) {
            // num的值为-1时，表示数据库中记录不存在
            var num = parseInt(data);
            if (num != -1) {
                var json = eval("(" + data + ")"); // string->json
                var deptArr = json.dept; // json对象的dept属性

                for (var i = 0; i < deptArr.length; i++) {
                    var arr = deptArr[i];
                    deptSelect.append(
                        '<option value="' + arr[0] + '">' + arr[1] + "</option>"
                    );
                }
            } else {
                alert("科室表未录入信息，请及时添加");
            }
        }
    });
}

/**
 * 根据选择的"挂号科室"，生成相应科室中的"开单医生"列表项
 */
function createDrnameOption() {
    // 获得当前"挂号科室"的编号
    var deptno = deptSelect.val();
    // 清除原有"开单医生"的下拉列表
    drnameSelect.empty();
    // 添加默认空白选项
    drnameSelect.append('<option value="0"></option>');
    // 如果"挂号科室"的编号是"0"，则退出函数
    if (deptno === "0") {
        return;
    }
    // 通过AJAX获得数据
    $.ajax({
        type: "post",
        url: "getDoctorInfoByDrlevelAndDeptno.do",
        async: false,
        data: {
            drlevel: "-1",
            deptno: deptno
        },
        dataType: "text",
        error: function () {
            alert("开单医生列表的ajax请求失败");
        },
        success: function (data) {
            // num的值为-1时，表示数据库中记录不存在
            var num = parseInt(data);
            if (num != -1) {
                var json = eval("(" + data + ")"); // string->json
                var doctorArr = json.doctor; // json对象的doctor属性

                for (var i = 0; i < doctorArr.length; i++) {
                    var arr = doctorArr[i];
                    drnameSelect.append(
                        '<option value="' + arr[0] + '">' + arr[1] + "</option>"
                    );
                }
            } else {
                alert("医生表未录入信息，请及时添加");
            }
        }
    });
}

/**
 * 复选框的全选与去取消
 */
function checked1() {
    var ck = changeAllCheckBox.prop("checked");
    $("input[name='drug_info']").prop("checked", ck);
}

function checked2() {
    //获得pay_detail的总数
    var total = $("input[name='drug_info']").length;
    //获得pay_detail的选中项数量
    var ckd = $("input[name='drug_info']:checked").length;
    //两者一致
    changeAllCheckBox.prop("checked", ckd == total);
}

function checked3() {
    var ck = changeAllCheckBox2.prop("checked");
    $("input[name='drug_info2']").prop("checked", ck);
}

function checked4() {
    //获得pay_detail的总数
    var total = $("input[name='drug_info2']").length;
    //获得pay_detail的选中项数量
    var ckd = $("input[name='drug_info2']:checked").length;
    //两者一致
    changeAllCheckBox2.prop("checked", ckd == total);
}

/**
 * 从数据库中获得"药品信息"
 */
function getDrugInfo() {
    $.ajax({
        type: "post",
        url: "getAllDruginfo.do",
        error: function () {
            alert("获得药品信息的ajax失败");
        },
        success: function (data) {
            var num = parseInt(data);

            if (num != -1) {
                var json = eval("(" + data + ")");
                var drug = json.drug;
                //console.log(json);
                //console.log(drug);
                for (var i = 0; i < drug.length; i++) {
                    $(".druginfo").append(
                        "<tr><td><input type='checkbox' name='drug_info' onclick='checked2();'/></td><td class='dgname'>" +
                        drug[i][1] + "</td><td class='spec'>" + drug[i][2] + "</td><td class='dgprice'>" + drug[i][3] +
                        "</td><td class='dginv'>" + drug[i][4] + "</td><td class='dguit'>" + drug[i][5] +
                        "</td><td class='drugno' style='display:none'>" + drug[i][0] + "</td></tr>"
                    );
                }
            } else {
                alert("药品表中无信息");
            }
        }
    });
}


/**
 * 向收费项目列表中添加药品信息
 * @param {*} obj 
 */
function addDrugToChargingItems(obj) {
    var trParent = $(obj).parent().parent(); // 获得所处的表格行
    var dgname = trParent.children(".dgname").html(); // 药品项目名称
    var spec = trParent.children(".spec").html(); // 药品规格
    var dgprice = trParent.children(".dgprice").html(); // 药品价格
    var dginv = trParent.children(".dginv").html(); // 药品库存
    var dguit = trParent.children(".dguit").html(); // 药品单位
    var drugno = trParent.children(".drugno").html(); // 药品编号
    var deptname = $(deptSelect.children().get(deptSelect.val())).text(); // 科室名称

    // 判断添加的药品是否重复
    var trs = cTbody.children("tr");
    for (var i = 0; i < trs.length; i++) {
        if ($(trs.get(i)).children(".drugno2").html() == drugno) {
            return;
        }
    }

    cTbody.append(
        "<tr><td><input type='checkbox' name='drug_info2' onclick='checked4();getTotalMoney();'/></td><td>" + dgname +
        "</td><td>" + spec + "</td><td class='dgprice2'>" + dgprice + "</td><td class='dginv2'>" + dginv + "</td><td>" + dguit +
        "</td><td class='need_num'><input class='check_required' name='need_num' type='text' value='0' onblur='checkNeedNum(this);getMoney(this);getTotalMoney()' /></td><td class='money'><input name='money' type='text' value='0' readonly='readonly'></td><td>" +
        deptname + "</td><td class='drugno2' style='display:none'>" + drugno + "</td></tr>"
    );
}

/**
 * 显示单个药品的总金额
 * @param {*} obj 
 */
function getMoney(obj) {
    var tr = $(obj).parent().parent();
    var num = parseInt(tr.children(".need_num").children().val()); // 药品数量
    //console.log(num);
    var price = parseFloat(tr.children(".dgprice2").html()); // 药品单价
    //console.log(price);
    tr.children(".money").children().val(num * price); // 显示单个药品的总钱数       
}

/**
 * 药品输入数量验证
 * @param {*} obj 
 */
function checkNeedNum(obj) {
    // 判断输入的数量是否超过库存
    if (isNaN(parseInt($(obj).val())) || parseInt($(obj).val()) > parseInt($(obj).parent().parent().children(".dginv2").html())) {
        // 超出库存
        checkStyle(obj, false);
        checkArr[9] = false;
    } else {
        checkStyle(obj, true);
        checkArr[9] = true;
    }
}

/**
 * 删除选中药品
 * @param {*} obj 
 */
function delDrugFromChargingItems(obj) {
    var trParent = $(obj).parent().parent(); // 获得所处的表格行
    trParent.remove(); // 移除该元素
}

/**
 * 根据选中的药品获得总价钱
 */
function getTotalMoney() {
    var trs = cTbody.children("tr");
    var sum = 0; // 总价钱

    for (var i = 0; i < trs.length; i++) {
        var tr = $(trs.get(i));
        var ck = tr.children("td").children("input[name='drug_info2']:checked");
        if (ck.length != 0) {
            sum += parseFloat(tr.children(".money").children().val());
        }
    }
    //console.log(sum);
    // 显示总价钱
    $("input[name='total']").val(sum);
    $("input[name='total_txt']").val(convertCurrency(sum));
}

/**
 * "划价"按钮功能
 */
function pricingFunc() {
    var elems = $('.check_required');
    for (var i = 0; i < elems.length; i++) {
        $(elems.get(i)).blur();
    }

    // 遍历检测结果数组，全通过往下执行;
    // 有一个不通过退出函数。
    console.log(checkArr);
    for (var i = 0; i < checkArr.length; i++) {
        if (checkArr[i] !== true) {
            alert("验证不通过，无法提交");
            return;
        }
    }

    // 通过客户端检测，发送数据
    var dnArr = []; // 提交的药品编号数组
    var trs = cTbody.children("tr");
    for (var i = 0; i < trs.length; i++) {
        var tr = $(trs.get(i));
        var ck = tr.children("td").children("input[name='drug_info2']:checked");
        if (ck.length != 0) {
            var dno = tr.children(".drugno2").text(); // 药品编号
            var dnum = tr.children("td").children("input[name='need_num']").val(); // 药品数量
            var dmoney = tr.children("td").children("input[name='money']").val(); // 药品单价
            dnArr.push(dno + "-" + dnum + "-" + dmoney);
        }
    }
    console.log(dnArr);

    $.ajax({
        type: "post",
        url: "pricing.do",
        data: {
            pid: $("input[name='pid']").val(),
            caseNo: caseNoInput.val(),
            pricingTotal: $("input[name='total']").val(),
            drugList: dnArr
        },
        dataType: "text",
        traditional: true,
        error: function () {
            alert("划价的ajax失败");
        },
        success: function (data) {
            var num = parseInt(data);

            if (num == -1) {
                alert("没有挂号");
            } else if (num == -2) {
                alert("患者已退号");
            } else if (num == -3) {
                alert("划号价格不可为0元");
            } else {
                alert("划号成功");
            }
        }
    });
}

/**
 * 根据"身份证号"和"病例号"获得挂号信息
 */
function getRegisterInfo() {
    if (!(checkArr[1] && checkArr[2])) {
        // "身份证号"或"病例号"检测不合格，跳出函数
        return;
    }

    $.ajax({
        type: "post",
        url: "getRegisterByPidAndCaseNo.do",
        data: {
            pid: pidInput.val(),
            caseNo: caseNoInput.val()
        },
        dataType: "text",
        error: function() {
            alert("获得挂号信息的ajax失败");
        },
        success: function (data) {
            var num = parseInt(data);

            if (num != -1) {
                var json = eval("(" + data + ")");
                settleTypeSelect.val(json.settleType);
                mcardNoInput.val(json.mcardNo == 0 ? "" : json.mcardNo);
                medicalTypeSelect.val(json.medicalTyle);
                deptSelect.val(json.dept);
                createDrnameOption(); // 运行函数，生成医生列表
                drnameSelect.val(json.drid);
                healthDiagnosisInput.val(""); // 清空"医保诊断"
            } 
        }
    });
}

/**
 * "收费结算"按钮点击功能，获得所有划价数据
 */
function getPricingMainInfo() {
    $.ajax({
        type: "post",
        url: "getAllPrcingMain.do",
        dataType: "text",
        error: function () {
            alert("获得划价数据失败");
        },
        success: function (data) {
            var num = parseInt(data);
            if (num != -1) {
                var json = eval("(" + data + ")");
                var list = json.pricingMainList;
                var pmTbody = $(".pricing_main_info");
                
                for (var i = 0; i < list.length; i++) {
                    console.log(list[i]);
                    pmTbody.append(
                        "<tr><td><input type='radio' name='pricing_info'/></td><td class='pricing_id'>" + 
                        list[i][0] + "</td><td class='case_no'>" +
                        getTenStr(list[i][1]) + "</td><td class='pricing_total'>" +
                        list[i][3] + "</td><td class='pricing_status'>" +
                        (list[i][4] == 1 ? "未收费" : "已收费") + "</td><td class='pricing_date'>" +
                        list[i][2] + "</td></tr>"
                    );
                }
            } else {
                alert("没有划价数据");
            }
        }
    });
}

/**
 * 向服务器端发送收费结算信息
 * @param {*} ck 
 */
function sendPricingMainInfo(ck) {
    var tr = ck.parent().parent(); // 选择项所在的行
    var caseNo = tr.children(".case_no").html(); // 病历号
    var payMoney = tr.children(".pricing_total").html(); // 总金额
    var payIno = payInoInput.val(); // 挂号发票号
    var pricingId = tr.children(".pricing_id").html(); // 划价号
    console.log(caseNo + " " + payMoney + " " + payIno + " " + pricingId);

    $.ajax({
        type: "post",
        url: "payMain.do",
        data: {
            payIno: payIno,
            caseNo: caseNo,
            payMoney: payMoney,
            payStatus: 1,
            pricingId: pricingId
        },
        error: function () {
            alert("收费结算的ajax失败");
        },
        success: function (data) {
            var num = parseInt(data);
            if (num == -1) {
                alert("请更新发票号");
            } else if (num == -2) {
                alert("收费失败");
            } else {
                alert("收费成功");
            }
        }
    });
}
 

/**
 * 绑定事件
 */
function bindEvent() {
    /** "收费发票号"输入框绑定事件 */
    payInoInput.blur(function () {
        // "收费发票号"检测
        checkArr[0] = checkUtil.checkNumber($(this), 10);

        checkStyle(this, checkArr[0]);
    });


    /** "身份证号"输入框绑定事件 */
    pidInput.keyup(function (e) {
        var eCode = e.keyCode ? e.keyCode : e.which ? e.which : e.charCode;
        // 回车键的keyCode为13，按下回车后执行函数
        if (eCode === 13) {
            queryIdCardInfoByPid(this.value);
            caseNoInput.focus();
            getRegisterInfo();
        }
    });
    pidInput.blur(function () {
        // "身份证号"检测
        checkArr[1] = checkUtil.checkIDCardFormat($(this));

        checkStyle(this, checkArr[1]);

        if (checkArr[1]) {
            queryIdCardInfoByPid(this.value);
            getRegisterInfo();
            pidInput.val($(this).val()); // 第二个"身份证号"输入框 
        }
    });


    /**"病例号"输入框绑定事件 */
    caseNoInput.blur(function () {
        // "病例号"检测
        checkArr[2] = checkUtil.checkNumber($(this), 10);
        checkStyle(this, checkArr[2]);
        getRegisterInfo();
    });


    /**"姓名"输入框绑定事件 */
    pnameInput.blur(function () {
        // "姓名"检测
        checkArr[3] = checkUtil.checkNoInput($(this));

        checkStyle(this, checkArr[3]);
    });


    /**"性别"下拉框绑定事件 */
    sexInput.blur(function () {
        // "性别"检测
        checkArr[4] = checkUtil.checkSelect($(this));

        checkStyle(this, checkArr[4]);
    });


    /**"年龄"输入框绑定事件 */
    ageInput.blur(function () {
        // "年龄"检测
        if (!(/^\d{1,3}$/).test($(this).val())) {
            //alert("输入不正确");
            checkStyle(this, false);
        } else {
            checkStyle(this, true);
        }
    });


    /**"出生日期"输入框绑定事件 */
    birthdayInput.blur(function () {
        // "出生日期"检测
        checkArr[5] = checkUtil.checkDateFormat($(this));

        checkStyle(this, checkArr[5]);
    });
    birthdayInput.change(function () {
        // "出生日期"改变"年龄""
        getAgeByBirthday();
    });


    /**"结算类别"下拉框绑定事件 */
    settleTypeSelect.blur(function () {
        // "结算类别"检测
        checkArr[6] = checkUtil.checkSelect($(this));

        checkStyle(this, checkArr[6]);
    });


    /**"医疗证号"输入框绑定事件 */
    mcardNoInput.blur(function () {
        // "医疗证号"检测
        var flag = checkUtil.checkNumber($(this), 5);

        checkStyle(this, flag);
    });


    /**"开单科室"下拉列表的绑定事件 */
    deptSelect.change(function () {
        // 动态生成医生选项
        createDrnameOption();
    });
    deptSelect.blur(function () {
        // "挂号科室"检测
        checkArr[7] = checkUtil.checkSelect($(this));

        checkStyle(this, checkArr[7]);
    });


    /**"开单医生"下拉框的绑定事件 */
    drnameSelect.blur(function () {
        // "看诊医生"检测
        checkArr[8] = checkUtil.checkSelect($(this));

        checkStyle(this, checkArr[8]);
    });

    // "更新发票号"按钮的绑定事件
    $('.refresh_ino').click(function () {
        getPayIno();
    });

    // "清屏"按钮的绑定事件
    $('.clear_form').click(function () {
        pidInput.val("");
        pnameInput.val("");
        sexInput.val("0");
        ageInput.val("");
        ageUnitSelect.val("1");
        birthdayInput.val("");
        settleTypeSelect.val("0");
        mcardNoInput.val("");
        medicalTypeSelect.val("0");
        deptSelect.val("0");
        healthDiagnosisInput.val("");
        drnameSelect.val("0");
        changeAllCheckBox2.prop("checked", false);
        cTbody.empty();
        getTotalMoney();
        $("input:not([name='total'],[name='total_txt']), select").css("border", "1px solid rgb(169, 169, 169)");

    });

    // "增加"按钮的绑定事件
    $(".add_drug_btn").click(function () {
        //console.log(checkArr[7]);
        // 判断科室是否选择
        if (!checkArr[7]) {
            alert("请选择开单科室");
            return;
        }
        // 获得药品信息
        $(".druginfo").empty();
        changeAllCheckBox.prop("checked", false);
        getDrugInfo();
        $("#myModal").modal("toggle");
    });

    // "删除"按钮的绑定事件
    $(".del_drug_btn").click(function () {
        var trs = cTbody.children("tr");

        for (var i = 0; i < trs.length; i++) {
            var ck = $(trs.get(i)).children("td").children("input[name='drug_info2']:checked");
            if (ck.length != 0) {
                delDrugFromChargingItems(ck); // 删除选中元素
                changeAllCheckBox2.prop("checked", false);
            }
        }

        getTotalMoney() // 更新总价钱
    });

    // 复选框的绑定事件
    changeAllCheckBox.click(function () {
        checked1();
    });
    changeAllCheckBox2.click(function () {
        checked3();
        getTotalMoney();
    });

    // 药品信息提交按钮
    $(".put_in").click(function () {
        var trs = $(".druginfo").children("tr");
        for (var i = 0; i < trs.length; i++) {
            var ck = $(trs.get(i)).children("td").children("input[name='drug_info']:checked");
            if (ck.length != 0) {
                addDrugToChargingItems(ck); // 添加选中元素
                changeAllCheckBox2.prop("checked", false);
            }
        }
    });

    // "划价"按钮的绑定事件
    $(".pricing_btn").click(function () {
        pricingFunc();
    });

    // "收费结算"按钮的绑定事件
    $(".pay_btn").click(function () {
        $(".pricing_main_info").empty();
        getPricingMainInfo();
        $("#myModal2").modal("toggle");
    });

    // 收费提交按钮的绑定事件
    $(".put_in2").click(function () {
        var trs = $(".pricing_main_info").children("tr");
        var ck = trs.children("td").children("input[name='pricing_info']:checked");

        if (ck.parent().parent().children(".pricing_status").html() == "已收费") {
            alert("已经付费，无法操作");
            return;
        }

        if (ck.length != 0) {
            sendPricingMainInfo(ck); 
        }
    });
}

/**
 * 在网页加载完时，执行相应的函数
 */
$(document).ready(function () {
    // 获得全局变量
    getGlobalVariable();
    // 获得当前可用的最新挂号发票号
    getPayIno();
    // 动态生成科室选项
    createDeptOption();
    // 绑定事件
    bindEvent();
});